package priv.lirenhe.dissertation.utils;

import java.security.MessageDigest;

public class CommonUtil {
	
	public static String getStrMD5(String s) {
	    try {
	        MessageDigest md = MessageDigest.getInstance("MD5");
	        byte[] bytes = md.digest(s.getBytes("utf-8"));
	        return toHex(bytes);
	    }
	    catch (Exception e) {
	        throw new RuntimeException(e);
	    }
	}

	/**
	 * byte呢是一个字节，也就是8位，如：0010 0100.而0xf0呢，也是8位：1111 0000.
	 * 而byte&0xf0呢，就是按位与操作(0&1=0,0&0=0,1&1=1)，这样呢就得到0010 0000这样八位表示的字节，
	 * 然后">>4"操作是向右移四位，最高位用0补，就得到0000 0010
	 * @param bytes
	 * @return
	 */
	private static String toHex(byte[] bytes) {
	    final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
	    StringBuilder ret = new StringBuilder(bytes.length * 2);
	    for (int i=0; i<bytes.length; i++) {
	        ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
	        ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
	    }
	    return ret.toString();
	}

}
